
package com.crowdfunding.circle.analyze.entity;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.crowdfunding.circle.sensitiveword.SensitiveWordUtils;

/**
 * 拆解项详情实体类
 *
 * @author 朱国军
 * @version 2016年07月03日 朱国军
 */
public class AnalyzeItemVO {

    /** 拆解项详情ID */
    private String analyzeItemId;

    /** 拆解报告ID */
    private String projectAnalyzeId;

    /** 项目类型详情ID */
    private String typeDetailId;

    /** 拆解项名称 */
    private String typeDetaiName;

    /** 拆解内容 */
    private String analyzeDetail;

    /** 查看价格 */
    private BigDecimal rechageFee;
    
    /** 拆解项序号 */
    private Integer itemIndex;

    /** 发布人 */
    private String publishUser;

    /** 创建时间 */
    private Date createTime;

    /** 更新时间 */
    private Date updateTime;

    /** 状态：0默认，1管理员删除，2用户删除 */
    private Integer dataStatus;

    /** 购买数量 */
    private Integer buyCount;

    /**
     * 设置拆解项详情ID
     *
     * @param analyzeItemId 拆解项详情ID
     */
    public void setAnalyzeItemId(String analyzeItemId) {
        this.analyzeItemId = analyzeItemId;
    }

    /**
     * 获取拆解项详情ID
     *
     * @return 拆解项详情ID
     */
    public String getAnalyzeItemId() {
        return analyzeItemId;
    }

    /**
     * 设置拆解报告ID
     *
     * @param projectAnalyzeId 拆解报告ID
     */
    public void setProjectAnalyzeId(String projectAnalyzeId) {
        this.projectAnalyzeId = projectAnalyzeId;
    }

    /**
     * 获取拆解报告ID
     *
     * @return 拆解报告ID
     */
    public String getProjectAnalyzeId() {
        return projectAnalyzeId;
    }

    /**
     * 设置项目类型详情ID
     *
     * @param typeDetailId 项目类型详情ID
     */
    public void setTypeDetailId(String typeDetailId) {
        this.typeDetailId = typeDetailId;
    }

    /**
     * 获取项目类型详情ID
     *
     * @return 项目类型详情ID
     */
    public String getTypeDetailId() {
        return typeDetailId;
    }

    /**
     * 设置拆解项名称
     *
     * @param typeDetaiName 拆解项名称
     */
    public void setTypeDetaiName(String typeDetaiName) {
        this.typeDetaiName = typeDetaiName;
    }

    /**
     * 获取拆解项名称
     *
     * @return 拆解项名称
     */
    public String getTypeDetaiName() {
        return typeDetaiName;
    }

    /**
     * 设置拆解内容
     *
     * @param analyzeDetail 拆解内容
     */
    public void setAnalyzeDetail(String analyzeDetail) {
        this.analyzeDetail = analyzeDetail;
    }

    /**
     * 获取拆解内容
     *
     * @return 拆解内容
     */
    public String getAnalyzeDetail() {
        return analyzeDetail;
    }

    /**
     * 设置查看价格
     *
     * @param rechageFee 查看价格
     */
    public void setRechageFee(BigDecimal rechageFee) {
        this.rechageFee = rechageFee;
    }

    /**
     * 获取查看价格
     *
     * @return 查看价格
     */
    public BigDecimal getRechageFee() {
        return rechageFee;
    }
    
    /**
     * 获取拆解项序号
     *
     * @return 拆解项序号
     */
    public Integer getItemIndex() {
        return itemIndex;
    }
    
    /**
     * 设置拆解项序号
     *
     * @param itemIndex 拆解项序号
     */
    public void setItemIndex(Integer itemIndex) {
        this.itemIndex = itemIndex;
    }
    
    /**
     * 设置发布人
     *
     * @param publishUser 发布人
     */
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }

    /**
     * 获取发布人
     *
     * @return 发布人
     */
    public String getPublishUser() {
        return publishUser;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取创建时间
     *
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取更新时间
     *
     * @return 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置状态：0默认，1管理员删除，2用户删除
     *
     * @param dataStatus 状态：0默认，1管理员删除，2用户删除
     */
    public void setDataStatus(Integer dataStatus) {
        this.dataStatus = dataStatus;
    }

    /**
     * 获取状态：0默认，1管理员删除，2用户删除
     *
     * @return 状态：0默认，1管理员删除，2用户删除
     */
    public Integer getDataStatus() {
        return dataStatus;
    }

    /**
     * 获取购买数量
     *
     * @return 购买数量
     */
    public Integer getBuyCount() {
        return buyCount;
    }

    /**
     * 设置购买数量
     *
     * @param buyCount 购买数量
     */
    public void setBuyCount(Integer buyCount) {
        this.buyCount = buyCount;
    }

    /**
     * 检查字段长度是否超长，检查非空字段是否有值
     *
     * @return 检查提示信息，为null时表示检查通过
     */
    public String valid() {

        if (SensitiveWordUtils.isContaintSensitiveWord(analyzeDetail, 1)) {
            return "拆解内容中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(analyzeDetail, 1) + "，请检查后再保存";
        }

        if (StringUtils.isBlank(analyzeDetail)) {
            return "拆解内容不能为空";
        }

        return null;
    }
}
